home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-portable.exe / quodlibet-3.3.0-portable / data / bin / unittest / signals.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2014-12-31  |  3KB  |  76 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. import signal
  5. import weakref
  6. from functools import wraps
  7. __unittest = True
  8.  
  9. class _InterruptHandler(object):
  10.     
  11.     def __init__(self, default_handler):
  12.         self.called = False
  13.         self.original_handler = default_handler
  14.         if isinstance(default_handler, int):
  15.             if default_handler == signal.SIG_DFL:
  16.                 default_handler = signal.default_int_handler
  17.             elif default_handler == signal.SIG_IGN:
  18.                 
  19.                 def default_handler(unused_signum, unused_frame):
  20.                     pass
  21.  
  22.             else:
  23.                 raise TypeError('expected SIGINT signal handler to be signal.SIG_IGN, signal.SIG_DFL, or a callable object')
  24.         self.default_handler = default_handler
  25.  
  26.     
  27.     def __call__(self, signum, frame):
  28.         installed_handler = signal.getsignal(signal.SIGINT)
  29.         if installed_handler is not self:
  30.             self.default_handler(signum, frame)
  31.         if self.called:
  32.             self.default_handler(signum, frame)
  33.         self.called = True
  34.         for result in _results.keys():
  35.             result.stop()
  36.         
  37.  
  38.  
  39. _results = weakref.WeakKeyDictionary()
  40.  
  41. def registerResult(result):
  42.     _results[result] = 1
  43.  
  44.  
  45. def removeResult(result):
  46.     return bool(_results.pop(result, None))
  47.  
  48. _interrupt_handler = None
  49.  
  50. def installHandler():
  51.     global _interrupt_handler
  52.     if _interrupt_handler is None:
  53.         default_handler = signal.getsignal(signal.SIGINT)
  54.         _interrupt_handler = _InterruptHandler(default_handler)
  55.         signal.signal(signal.SIGINT, _interrupt_handler)
  56.  
  57.  
  58. def removeHandler(method = None):
  59.     if method is not None:
  60.         
  61.         def inner(*args, **kwargs):
  62.             initial = signal.getsignal(signal.SIGINT)
  63.             removeHandler()
  64.             
  65.             try:
  66.                 return method(*args, **kwargs)
  67.             finally:
  68.                 signal.signal(signal.SIGINT, initial)
  69.  
  70.  
  71.         inner = (wraps(method),)(inner)
  72.         return inner
  73.     if None is not None:
  74.         signal.signal(signal.SIGINT, _interrupt_handler.original_handler)
  75.  
  76.